簡單介紹跨平台App開發框架的類型與適用的情境。
為什麼會有App跨平台框架
2008年夏天,Apple iPhone 3G上的App Store發佈之後,軟體商要將軟體發佈到消費者手中的手機變的簡單不少。消費者也因為這個原因,而能夠用價格低廉的價格享受高品質又多樣化的各類型App。而軟體商店的模式後來也變成各家手機平台的基本服務,如Android上的Google Play、BlackBerry上的BlackBerry World等等。
在初期,大部份App都是限定平台,不是只有iPhone上有,就是Android獨家。但是因為商業上的需求,對於一些廠商而言,App只相容於特定作業系統的手機或平板,並無法將商業利益最大化,最好能夠同時支援多個平台。
不同的行動作業系統間,架構差異與設計邏輯差異非常大。開發環境、工具與使用的程式語言都不相同,要同時兼顧有一定的難度。對於資本雄厚的公司來說,每個平台都有專門的部門來開發,不見得是件難事。但是對於大部份的開發者而言,要開發跨平台App,等於要同時熟悉這幾個平台的開發環境,門檻不低,有實務上的困難。因此才會有各種跨平台行動應用開發解決方案,讓開發者可以使用同一種語言和架構來開發相容於iOS、Android等平台的App。
跨平台框架的類型
由於大部份的開發者都有開發過網站的經驗,因此有不少跨平台開發解決方案都使用了HTML, Javascript和CSS作為開發的基礎。
Mobile Web App框架
各種方案當中,開發Web App是支援平台最多的一種做法。因為現代的行動平台一定都配備了瀏覽器,以Web的形式來開發App是最直接且入門門檻相對較低的做法。但是因為瀏覽器的諸多限制,有很多裝置上的功能(如:拍照、存取通訊錄或相簿)並無法使用,與系統間也沒有資料交換(如:通訊錄、行事曆)的機制。再加上無法上架到App Store或Google Play等銷售平台上販賣,這大大限制了其應用範圍。不過如果只是單純的資訊傳遞,不需要太多與手機的整合性功能,開發行動裝置專用的Mobile Web App,或是同時適用各種裝置的Responsive Web App將能夠橫跨最多的平台。只是要做到流暢的使用者經驗,開發者對於HTML5、CSS3的技術掌握必須在一定的層次之上,才能對於各種瀏覽器環境有一定的掌握。目前針對Mobile Web的框架有Sencha Touch、jQuery Mobile、Meteor、Mobello等。Responsive Web相關框架則有Bootstrap、Foundation、Skeleton、Amazium等。
Hybrid App框架
另一種解決方案為以PhoneGap為首的Hybrid App,它提供一個框架,讓開發者能夠將網頁直接打包成App,上架販售。若要使用裝置的功能,這類框架也提供能Javascript API,讓App可以存取手機的功能(如:拍照)。Hybrid App直接使用網頁來制作使用者界面,這是它的優點、但同時也是缺點。因為這代表開發者無法直接使用平台原生的使用者介面,也就是說看起來不像該平台的App,要花時間調整到和原生界面相同的視覺效果和流程度,有相當大的門檻要跨過。通常會藉由使用Mobile Web App的框架來降低開發難度。但由於顯示的部分還得經過瀏覽器引擎,也有跨瀏覽器的相容問題要處理,在整體的功能與流暢度方面,尚難以和Native App相提並論。不過如果只是單純的資訊呈現,對流暢度和功能的要求較低,Hybrid App還是其生存空間,尤其PhoneGap已經被整合到視覺設計師熟悉的Dreamweaver內。
跨平台Native App框架
這邊提到的Native App,講的用是非原廠的開發平台開發Native App的這類型框架。此類框架讓開發者使用他們過去已經熟悉的程式語言如Javascript、C#、Lua開發App,發布時再把程式轉換為Native App。因此在流暢度上,比較容易可以和Native App做到差不多的水準。在功能性和與行動平台功能的整合性,也較Hybrid App為佳。這類框架通常都有其特別的適用範圍,如Titanium可以使用原生的UI元件,適合一般的應用開發。Corona則是2D的遊戲引擎,Unity則是3D遊戲的首選開發框架。和原廠的開發平台相比,這些框架常有的弱點就是檔案通常比較大、對於個平台的新功能支援也會慢於原廠平台。不過這換來的是較低的學習門檻和跨平台開發節省的時間。
技術抉擇
以上介紹的幾個類型的框架並沒有絕對的好或壞,而是應該看應用類型與公司的資源和策略而定。
如果團隊的技術實力和資源足夠,能夠用原廠的開發平台來開發,非常恭喜你,這將是能夠完全發揮軟硬體效能的選擇。如果橫跨最多平台是重點,且無需上架販售,那麼Mobile Web會是最好的選擇。如果只需要基本的裝置功能,且可以掌握Mobile Web開發技術,那麼Hybrid App可以考慮看看。如果你想開發與原廠開發工具相近的使用者經驗,而且不會用到平台最新技術,你最適合的選項將會是跨平台Native App框架。